//内层属性如果是数组或者对象，可以直接在里面限制数组或者对象类型
type ResData = {
  code: number;
  message: string;
  list: Array<{ title: string; price: string }>;
  user: {
    username: string;
    uid: string;
  };
};

//内层属性如果是数组或者对象
// 也可以分开写，先定义type或者接口 限制 内层属性值的对象类型
type ResListData = { title: string; price: string };
type ResUserData = {
  username: string;
  uid: string;
};
type ResData2 = {
  code: number;
  message: string;
  list: Array<ResListData>;
  user: ResUserData;
  //可选属性
  params?: string;
  params2: string | undefined;
};

/*
 ***type 配置  &  交叉类型
 */
type Point2D = {
  x: number;
  y: number;
};

// Point3D  这个类型==》   Point2D 和 {z：number} 两个里面的属性和方法都有
type Point3D = Point2D & {
  z: number;
};
let obj1: Point3D = {
  x: 1,
  y: 1,
  z: 1,
};
